home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / other / dopus412-gpl / program / data.c < prev    next >
C/C++ Source or Header  |  2000-02-28  |  12KB  |  275 lines

  1. /*
  2.  
  3. Directory Opus 4
  4. Original GPL release version 4.12
  5. Copyright 1993-2000 Jonathan Potter
  6.  
  7. This program is free software; you can redistribute it and/or
  8. modify it under the terms of the GNU General Public License
  9. as published by the Free Software Foundation; either version 2
  10. of the License, or (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20.  
  21. All users of Directory Opus 4 (including versions distributed
  22. under the GPL) are entitled to upgrade to the latest version of
  23. Directory Opus version 5 at a reduced price. Please see
  24. http://www.gpsoft.com.au for more information.
  25.  
  26. The release of Directory Opus 4 under the GPL in NO WAY affects
  27. the existing commercial status of Directory Opus 5.
  28.  
  29. */
  30.  
  31. #include "dopus.h"
  32.  
  33. /* SAS Detach information */
  34.  
  35. long __stack=16384;                        /* Stack size needed */
  36. long __priority=0;                         /* Default task priority */
  37. long __BackGroundIO=0;                     /* IO off for non-beta */
  38. char *__procname="dopus_task";             /* Task name */
  39.  
  40. /* Library bases */
  41.  
  42. struct DOpusBase *DOpusBase;              /* dopus.library */
  43. struct IntuitionBase *IntuitionBase;      /* intuition.library */
  44. struct GfxBase *GfxBase;                  /* graphics.library */
  45. struct Library *IconBase;                 /* icon.library */
  46. struct Library *DiskfontBase;             /* diskfont.library */
  47. struct Library *PPBase;                   /* powerpacker.library */
  48. struct Library *LayersBase;               /* layers.library */
  49. struct Library *WorkbenchBase;            /* workbench.library */
  50. struct Library *MUSICBase;                /* music.library */
  51. struct Library *CxBase;                   /* commodities.library */
  52. struct Library *RexxSysBase;              /* rexxsyslib.library */
  53. struct Library *AccountsBase;             /* accounts.library */
  54. struct Library *UtilityBase;              /* utility.library */
  55.  
  56.  
  57. /* Intuition objects */
  58.  
  59. struct IntuiMessage *IMsg;                /* Main IntuiMessage pointer */
  60. struct Screen *MainScreen=NULL;           /* Main screen */
  61. struct Screen *iffscreen=NULL;            /* IFF display screen */
  62. struct Screen *fontscreen=NULL;           /* Font display screen */
  63. struct Screen *blankscreen=NULL;          /* Blank screen for IFF viewer */
  64. struct Window *Window=NULL;               /* Main window */
  65. struct Window *fontwindow=NULL;           /* Window for font display */
  66. struct Window *ansiread_window;           /* Window for rendering ANSI text */
  67. struct Window *reqoverride=NULL;          /* Pointer for SimpleRequest window */
  68.  
  69. /* Graphics objects */
  70.  
  71. struct ViewPort *main_vp;                 /* Main screen ViewPort */
  72.  
  73. struct RastPort *main_rp;                 /* Main window RastPort */
  74. struct RastPort *font_rp;                 /* Font window RastPort */
  75. struct RastPort dir_rp[2];                /* Directory window RastPorts */
  76.  
  77. struct TextFont *scr_font[NUMFONTS];      /* Fonts used in screen display */
  78.  
  79. /* Exec objects */
  80.  
  81. struct Process *main_proc;                /* Main Process */
  82. struct Task *hotkey_task=NULL;            /* HotKey Task */
  83. struct Task *clock_task=NULL;             /* Clock Task */
  84.  
  85. struct MsgPort *count_port=NULL;          /* Port to establish run count */
  86. struct MsgPort *general_port=NULL;        /* General Message Port */
  87. struct MsgPort *audio_port[2];            /* 8SVX Sound player Ports */
  88. struct MsgPort *appmsg_port=NULL;         /* AppObject Message Port */
  89. struct MsgPort *arexx_port=NULL;          /* ARexx Port */
  90.  
  91. struct MsgPort *hotkeymsg_port=NULL;      /* Messages to the hotkey task */
  92. struct MsgPort *clockmsg_port=NULL;       /* Messages to the clock task */
  93.  
  94. struct IOStdReq *keyboard_req=NULL;       /* Keyboard IO Request block */
  95. struct IOStdReq *input_req=NULL;          /* Input IO Request block */
  96. struct IOAudio *audio_req1[2];            /* Audio IO Request block #1 */
  97. struct IOAudio *audio_req2[2];            /* Audio IO Request block #2 */
  98.  
  99. /* DOS objects */
  100.  
  101. BPTR ramdisk_lock=0;                      /* Lock on RAM: */
  102. APTR windowptr_save;                      /* Saved Window Pointer */
  103. LONG nil_file_handle;                     /* Handle on the NIL: device */
  104.  
  105. BPTR old_pr_cis;                          /* Old pr_CIS pointer */
  106. BPTR old_pr_cos;                          /* Old pr_COS pointer */
  107. void *old_pr_consoletask;                 /* Old pr_ConsoleTask pointer */
  108.  
  109. /* General objects */
  110.  
  111. struct DOpusRemember *general_key=NULL;   /* General memory key */
  112. struct DOpusRemember *help_key=NULL;      /* Memory key for help files */
  113. struct DOpusRemember *filetype_key=NULL;  /* Memory key for filetype list */
  114. struct DOpusRemember *audio_key=NULL;     /* Memory key for 8SVX player */
  115. struct DOpusRemember *menu_key=NULL;      /* Memory key for menus */
  116.  
  117. USHORT *nullpalette;                      /* Pointer to a black palette */
  118. UBYTE *audiodata;                         /* Audio data to play */
  119. ULONG audio_size;                           /* Size of audio data */
  120.  
  121. struct UserInfo *user_info;                 /* UserInfo for envoy */
  122. struct GroupInfo *group_info;               /* GroupInfo for envoy */
  123.  
  124.  
  125. /* Directory Opus Internal objects */
  126.  
  127. struct Directory
  128.     *last_selected_entry=NULL;              /* The last entry selected */
  129. struct Help *dopus_firsthelp=NULL;        /* The first help message */
  130. struct dopusfiletype
  131.     *dopus_firsttype=NULL;                  /* The first filetype */
  132. struct dopusgadgetbanks
  133.     *dopus_firstgadbank=NULL;               /* The first gadget bank */
  134. struct dopusgadgetbanks
  135.     *dopus_curgadbank=NULL;                 /* The current gadget bank */
  136. struct dopushotkey
  137.     *dopus_firsthotkey=NULL;                /* The first hotkey */
  138. struct dopushotkey
  139.     *dopus_globalhotkey=NULL;               /* The last hotkey function */
  140.  
  141. struct DirectoryWindow *dopus_curwin[2];  /* Currently displayed buffer */
  142. struct DirectoryWindow
  143.     *dopus_firstwin[2];                     /* First buffer in each window */
  144. struct DirectoryWindow
  145.     *dopus_specialwin[2];                   /* Special buffer for each window */
  146. struct DirectoryWindow *dopus_oldwin[2];  /* Last buffer displayed */
  147.  
  148. void *dir_memory_pool=NULL;               /* Memory pool for allocations */
  149.  
  150.  
  151. /* String data */
  152.  
  153. char str_config_basename[256];            /* Configuration base name */
  154. char str_config_file[256];                /* Configuration file */
  155. char str_dopusrt_path[256];               /* DOpusRT path name */
  156.  
  157. char str_select_info[80];                 /* Status bar text for selection info */
  158. char *str_select_pattern[3];              /* Three different Select patterns */
  159. char *str_arexx_command;                  /* Entered ARexx command string */
  160. char *str_space_string;                   /* 255 spaces in a string */
  161. char str_hunt_name[80];                   /* File name to hunt for */
  162. char str_hunt_name_parsed[164];           /* Hunt file parsed */
  163. char str_search_string[80];               /* String to search for */
  164. char str_filter[40];                      /* File filter for recursive ops */
  165. char str_filter_parsed[84];               /* File filter parsed */
  166.  
  167. char str_version_string[30];              /* Current version string */
  168. char str_arexx_portname[30];              /* ARexx Port name */
  169.  
  170. UBYTE var_key_matrix[13];                 /* Keyboard matrix data area */
  171. char *str_last_statustext;                /* Last status text displayed */
  172.  
  173. char str_last_rexx_result[256];           /* Last ARexx result */
  174.  
  175. /* Various data */
  176.  
  177. BYTE status_iconified=0;                  /* Current iconified status */
  178. BYTE status_configuring=-1;               /* Configuring status */
  179. BYTE status_justabort=0;                  /* Have we just aborted? */
  180. BYTE status_haveaborted=0;                /* The abort sequence has been hit */
  181. BYTE status_rexxabort=0;                  /* Abort flag for ARexx scripts */
  182. BYTE status_previousabort;                /* Did we abort a while ago ? */
  183. BYTE status_publicscreen;                 /* Are we on a public screen? */
  184. ULONG status_flags;                       /* Various status bits */
  185.  
  186. BYTE data_active_window=0;                /* Active directory window */
  187. UBYTE data_buffer_count[2];               /* Number of buffers in each window */
  188. BYTE data_gadgetrow_offset=0;             /* Gadget row offset */
  189. SHORT data_drive_offset=0;                /* Current drive offset */
  190. ULONG data_colorclock;                    /* Color clock value for this system */
  191.  
  192. ULONG time_current_sec;                   /* Current Second (from Intuition) */
  193. ULONG time_current_micro;                 /* Current Micro (from Intuition) */
  194. ULONG time_previous_sec;                  /* Previous Second (from Intuition) */
  195. ULONG time_previous_micro;                /* Previous Micro (from Intuition) */
  196.  
  197. UBYTE system_version2;                    /* OS version 2 or greater */
  198. int system_dopus_runcount;                /* Run count of this copy */
  199.  
  200. ULONG data_window_refresh;                /* Windows that need refreshing */
  201.  
  202. USHORT scr_gadget_rows;                   /* Number of button rows */
  203. USHORT scr_gadget_bank_count;             /* Number of button banks */
  204.  
  205. USHORT scr_min_width;                     /* Minimum window width */
  206. USHORT scr_min_height;                    /* Minimum window height */
  207.  
  208. /* Configuration data */
  209.  
  210. struct Config *config;                    /* Configuration structure */
  211. BPTR configopus_segment=NULL;             /* Segment pointer for ConfigOpus */
  212. BPTR external_mod_segment[3];             /* External module segments */
  213. BYTE config_changed=0;                    /* Configuration has been changed */
  214.  
  215. /* Disk and DOS operations data */
  216.  
  217. UBYTE disk_change_state;                  /* Lower bits indicate change state */
  218.  
  219. ULONG dos_global_bytecount;               /* Global byte count from recursive op */
  220. ULONG dos_global_copiedbytes;             /* Bytes copied in a recursive op */
  221. ULONG dos_global_deletedbytes;            /* Bytes copied in a recursive op */
  222. ULONG dos_global_blocksneeded;            /* Number of blocks needed to copy */
  223.  
  224. struct DateStamp dos_copy_date;           /* DateStamp of file last copied */
  225. ULONG dos_copy_protection;                /* Protection of file last copied */
  226. char dos_copy_comment[80];                /* Comment of file last copied */
  227.  
  228. BOOL glob_unprotect_all;                  /* Unprotect all files */
  229.  
  230. BOOL global_swap_window=FALSE;            /* Active window changed */
  231.  
  232. struct Directory dos_global_entry;        /* Global single file entry */
  233.  
  234. struct NotifyRequest *dos_notify_req[2];  /* Notify requests for both windows */
  235. char dos_notify_names[2][256];            /* Notify requests name buffers */
  236.  
  237. struct recpath *rec_firstpath;            /* Directory path list pointer */
  238. struct DOpusRemember *rec_pathkey=NULL;   /* Memory key for dir list */
  239.  
  240. struct Requester dopus_busy_requester;    /* Busy requester */
  241.  
  242. char *icon_type_names[]={                 /* Names of different icon types */
  243.     "Disk",
  244.     "Drawer",
  245.     "Tool",
  246.     "Project",
  247.     "Trash",
  248.     "Device",
  249.     "Kick",
  250.     "AppIcon"};
  251.  
  252. struct DOpusRemember *recurse_dir_key;    /* Memory key for RecursiveDirectory's */
  253. struct RecursiveDirectory *first_recurse; /* First recursive directory pointer */
  254. int recurse_max_depth;                    /* Maximum depth reached */
  255. struct RecursiveDirectory
  256.     **recurse_parent_array;                 /* Array of parent directories */
  257.  
  258. struct path_complete completion[2];       /* Path-name completion data */
  259.  
  260. /* DateTime stuff */
  261.  
  262. char *date_months[12];                    /* Months */
  263. char *date_shortmonths[12];               /* Short months */
  264. char *date_weekdays[7];                   /* Weekdays */
  265. char *date_shortweekdays[7];              /* Short weekdays */
  266. char *date_special[4];                    /* Special days */
  267.  
  268. struct StringData stringdata={            /* String data */
  269.     NULL,
  270.     0,
  271.     NULL,
  272.     NULL,0,
  273.     0};
  274.  
  275.